﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Domain.MainModule.Entities;

namespace Application.MainModule.BankAccountsManagement
{
    public interface IBankAccountManagementService
    {
        /// <summary>
        /// Add new bank account
        /// </summary>
        /// <param name="bank account">BankAccount to be added</param>
        void AddBankAccount(BankAccount bankAccount);

        /// <summary>
        /// Change existing bank account
        /// </summary>
        /// <param name="bank account">Existing bank account to modify</param>
        void ChangeBankAccount(BankAccount bankAccount);

        /// <summary>
        /// Remove existing bank account
        /// </summary>
        /// <param name="bank account">BankAccount to remove</param>
        void RemoveBankAccount(BankAccount bankAccount);

        List<BankAccount> FindBankAccountsByUserId(Guid userId);

        List<BankAccount> FindPagedBankAccounts(int pageIndex, int pageCount);

        List<BankAccountType> GetAllBankAccountTypes();

        List<Bank> GetAllBanks();
    }
}
